package com.yuandian.api.management.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yuandian.api.management.validate.InsertFlag;
import com.yuandian.api.management.validate.UpdateFlag;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 探针采集配置表-实体
 * @author zfsn
 * @date 2023-4-17
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "探针采集配置表", description = "")
@TableName("conf_probe_manage")
public class ConfProbeManage extends BasePage<ConfProbeManage> {

	/**
	 * null
	 */
	@ApiModelProperty(value = "", notes = "null")
	@TableId(type = IdType.AUTO)
	private Integer id;

	/**
	 *
	 */
	@NotNull(message = "探针名称不能为空", groups = {InsertFlag.class})
	@ApiModelProperty(value = "探针名称", notes = "")
	private String probeName;

	/**
	 *
	 */
	@NotNull(message = "探针别名不能为空", groups = {InsertFlag.class})
	@ApiModelProperty(value = "探针别名", notes = "")
	private String probeAsName;

	/**
	 *
	 */
	@NotNull(message = "探针ip不能为空", groups = {InsertFlag.class})
	@ApiModelProperty(value = "ip", notes = "")
	private String ip;

	/**
	 *
	 */
	@NotNull(message = "数据端口不能为空", groups = {InsertFlag.class})
	@ApiModelProperty(value = "数据端口", notes = "")
	private Integer receivePort;

	/**
	 *
	 */
	@NotNull(message = "版本不能为空", groups = {InsertFlag.class})
	@ApiModelProperty(value = "版本", notes = "")
	private String version;

	/**
	 *
	 */
	@ApiModelProperty(value = "信息端口", notes = "")
	@NotNull(message = "信息端口不能为空", groups = {InsertFlag.class})
	private Integer portInfo;

	/**
	 *
	 */
	@ApiModelProperty(value = "采集获取方式", notes = "")
	@NotNull(message = "采集获取方式不能为空", groups = {InsertFlag.class})
	private String comments;

	/**
	 *
	 */
	@ApiModelProperty(value = "状态", notes = "")
	private Integer isStatus;

	/**
	 *
	 */
	@ApiModelProperty(value = "创建人", notes = "")
	private String createBy;

	/**
	 *
	 */
	@ApiModelProperty(value = "创建时间", notes = "")
	private LocalDateTime createTime;

	/**
	 *
	 */
	@ApiModelProperty(value = "模板id", notes = "")
	private Integer  templateId;

	/**
	 *
	 */
	@ApiModelProperty(value = "分组id", notes = "")
	@NotNull(message = "分组id不能为空", groups = {InsertFlag.class})
	private Integer groupId;

	/**
	 * 0:否
	 */
	@ApiModelProperty(value = "是否屏蔽原始数据,1:是", notes = "0:否")
	@NotNull(message = "是否屏蔽原始数据不能为空", groups = {InsertFlag.class})
	private Integer noRawData;

	/**
	 *
	 */
	@ApiModelProperty(value = "探针运行状态", notes = "")
	private Integer probeStatus;

	/**
	 *
	 */
	@ApiModelProperty(value = "CPU利用率", notes = "")
	private String cpuUtilization;

	/**
	 *
	 */
	@ApiModelProperty(value = "硬盘使用率", notes = "")
	private String diskUtilization;

	/**
	 *
	 */
	@ApiModelProperty(value = "内存利用率", notes = "")
	private String memoryUtilization;

	/**
	 *
	 */
	@ApiModelProperty(value = "硬盘大小", notes = "")
	private String diskSize;

	/**
	 *
	 */
	@ApiModelProperty(value = "内存大小", notes = "")
	private String memorySize;

	/**
	 *
	 */
	@ApiModelProperty(value = "探针实际发送数据端口", notes = "")
	private Integer probeRealPort;

	/**
	 * 探针同步业务配置状态
	 */
	@TableField(exist = false)
	private String probeSyncBusiStatus;

	/**
	 * id集合
	 */
	@TableField(exist = false)
	@ApiModelProperty(value = "id集合", notes = "")
	private List<Integer> idList;

	/**
	 * 协议名
	 */
	@TableField(exist = false)
	private String protocolName;

}
